From c730da041b1e73dc3e430e37a4e19ac446e74fd2 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Sun, 13 Aug 2006 09:44:07 +0100 Subject: [PATCH] [HVM] HVMOP_get_param return parameter value within the provided parameter struct, not as a direct return value. Signed-off-by: Keir Fraser --- xen/arch/x86/hvm/hvm.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 2b1f7c887a..eb868ab738 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -568,7 +568,7 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg) else if ( IS_PRIV(current->domain) ) { d = find_domain_by_id(a.domid); - if ( !d ) + if ( d == NULL ) return -ESRCH; } else @@ -578,22 +578,24 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg) if ( op == HVMOP_set_param ) { - rc = 0; d->arch.hvm_domain.params[a.index] = a.value; + rc = 0; } else { - rc = d->arch.hvm_domain.params[a.index]; + a.value = d->arch.hvm_domain.params[a.index]; + rc = copy_to_guest(arg, &a, 1) ? -EFAULT : 0; } put_domain(d); - return rc; + break; } default: { DPRINTK("Bad HVM op %ld.\n", op); rc = -ENOSYS; + break; } } -- 2.30.2